Windowing is a technique whereby a display field (e.g. a display screen) may be shared by a number of tasks by allowing a portion of the display to be allocated to each of the tasks. Often, the windows overlap one another which creates problems for the display system in determining which information received from the tasks is to be displayed at which position in the display field.
In a conventional type of display system, information relating to each pixel position in the display field is stored in a display buffer. There are normally a plurality of bits per pixel position, for example eight. The information for a particular pixel position in the display field identifies the color for the pixel at that position. This information can be used to drive a display device directly, or can instead be used to index a look-up table containing information for actually driving the display device. The look-up table, or palette as it is usually known, can be compared to an artist's palette, as each location, or entry, in the palette defines a particular color mix. However, the index information need not necessarily be color information but could, for example, be grey - scale information for a monochrome display. In general terms, the palette defines the chrominance and/or luminance values for the pixels of the display field.
The most widely used windowing technique is for control software to work out for each line, area of character to be displayed whether it falls totally, partly or not at all within a window in the display field and can therefore be displayed. This is a time consuming process and has severe performance disadvantages, particularly for an interactive display system. In addition, if the palette is provided as a common system resource for a number of tasks, if any of the tasks alters an entry in the palette, then this entry will also be changed for the other tasks.
Various approaches have been proposed to overcome the performance disadvantages of the above technique.
One such approach is to allocate one or more bit planes (i.e. one or more bits per pixel location) to each window and using a plane write enable mask (a mask saying which bits in each pixel are to be updated) to protect planes belonging to anything but the current window. It is possible to arrange a plurality of windows in a priority order by manipulating the palette. However, this severely limits the number of colors available. If there are eight bits per pixel (i.e. for an 8 plane machine) and four windows, then only four colors can be allocated per window. Palette control is also difficult in such an arrangement as all the windows are associated with bits in each palette entry. In view of this, when a task wishes to change one of its colors, multiple palette entries have to be modified.
Another approach to window management is to provide hardware scissoring. A window is defined in hardware which may be updated regardless of the display field contents and the data to be written. Although this technique is relatively efficient for drawing a single rectangular window, it becomes increasing inefficient as more windows are included and particularly so where windows are overlaid by others leaving non-rectangular areas visible, in which case a scissor plane is required to define the scissor boundary.
Yet a further windowing technique, for display systems with a display device in the form of a cathode ray tube (CRT), is the use of a cathode ray tube controller (CRTC) to pick up an appropriate window for display pixel by pixel from separate sources (essentially separate display buffers), one per window. This is a costly approach, however, due to the cost of additional hardware logic and additional storage for multiple screens of display data which are needed. A display system, which is generally of this type and comprises a multi-plane display buffer in which windowing is performed using an additional bit plane for selecting the source of data to be displayed, is described in an article on pages 2526 and 2527 of the IBM Technical Disclosure Bulletin, Vol. 29, No. 6 published in November, 1986.